# 字典

# 键值对 键：key  值：value
# 注意：key是唯一的 而value是可以重复的
a = {'你好':"hello word","男":"male","女":"female"}   # 定义一个字典  注意格式
# print(a)
# print(type(a['你好']))

# stus = {1001:"张三",1002:"李四",1005:"王五","学号":"1006"}  #定义一个字典
# print(stus)                                 #打印字典stus
# print(type(stus))                           # 显示stus类型

# print(stus["学号"])   # 直接根据  字典名[key]  来找出相应的内容
# print(stus.get("学好",100))   # 根据给出的 字典名和key值  进行判断字典中是否对应内容 且当字典中无对应key值时 可以增设一个返回值（默认为 null）

#如果是相同的key，覆盖这个key的数据
# stus[1001]="刘备"                          #定义字典内的key为1001 所对应的数据
# print(stus)
#如果没有，则新增
# stus[1003]="曹操"
# print(stus)

#删除 字典内的键值对
# del(stus[1003])
# print(stus)

# #删除字典
# del stus

#清空字典
# stus.clear()
# print(stus)

#查找数据
#如果内有对应key（键）则
# print(stus[1010])     # 如果没有1010对应的key（键）则会报错 报错为KeyError: 1010

# .get 提供一个默认值 如果有，则返回对应的值，如果没有 则返回提供的默认值
# print(stus.get(1001,"查无此人"))     #如果有，则返回对应的值
# print(stus.get(1003,"查无此人"))     #如果没有，则返回提供的默认值


# key（） 打印字典中的键
# value()  打印字典中的值
# items（）  打印字典中的键值对

# print(stus.keys())
# print(stus.values())
# print(stus.items())
#
#
# for key in stus.keys():
#     print(key,end="\t")
# print()
# for value in stus.values():
#     print(value,end="\t\t\t")
# print()
# for k,v in stus.items():
#     print(f"{k},{v}",end="\t")
# print()

# 字典的嵌套
stus = [{"学号":"1001","姓名":"张三","语文":"99","数学":"95","外语":"93"},
        {"学号":"1002","姓名":"李四","语文":"95","数学":"89","外语":"90"},
        {"学号":"1003","姓名":"王五","语文":"99","数学":"69","外语":"96"},]
print(stus)
print(f'{stus[0]["学号"]},{stus[0]["姓名"]}')    # 注意 输出格式 f“” 为 f “{}，{}”其中 {}里的内容为填充值  且满足与程序中变量映射关系
print(f'{stus[1]["学号"]},{stus[1]["姓名"]}')     # 对于列表和元组来说 是以脚标为索引 而字典是以 key值为索引
print(f'{stus[2]["学号"]},{stus[2]["姓名"]}')    # 查询方式： 列表和元组都是 列表名（元组名）[脚标]  而  字典是 字典名[key] 注意：key值可以是数字也可以是字符 与字典定义的key值相同



